%------------------------------------------------------------------------------
% Copyright (c) 1991-2014, Xavier Leroy and Didier Remy.  
%
% All rights reserved. Distributed under a creative commons
% attribution-non-commercial-share alike 2.0 France license.
% http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
%
% Translation by
%------------------------------------------------------------------------------

\chapter*{\label{sec/more}\ifhtml{\aname{htocmore}}Going further}
\addcontentsline{toc}{chapter}{\ifhtml{\ahrefloc{htocmore}}{Going further}}
\cutname{more.html}

We have shown how \ocaml's \libmodule{Sys}, \libmodule{Unix}, and
\libmodule{Threads} modules can be used to program applications that
interact with the operating system.

These modules allow the invocation of the most important Unix system calls
directly from {\ocaml}. Some of these calls were replaced by higher-level
functions, either to facilitate programming or to maintain invariants
needed by {\ocaml}'s runtime system. In any case, this higher-level
access to the Unix system streamlines the development of applications.

Not every feature of the Unix system is available through these
modules, however it is still possible to access the missing ones by
writing C bindings.

Another useful library is Cash~\cite{Cash} which focuses on writing
scripts directly in {\ocaml}. This library completes the \ml+Unix+
module in two different ways. First, in addition to a few helper
functions to write scripts, it provides, on top of the \ml+Unix+
module, a few system call variations to assist the programmer in
process and pipe management. Second, it offers additional entry points
to the Unix system.
